<?php
declare(strict_types=1);

namespace catcher;

use think\Paginator;
use think\response\Json;

class CatchResponse
{
    /**
     * 成功的响应
     *
     * @time 2019年12月02日
     * @param array $data
     * @param $msg
     * @param int $code
     * @return Json
     */
    public static function success($data = [], $msg = 'success', $code = Code::SUCCESS): Json
    {
        return json([
            'code' => $code,
            'message' => $msg,
            'data' => $data,
        ]);
    }

    /**
     * 分页
     *
     * @time 2019年12月06日
     * @param Paginator $list
     * @return
     */
    public static function paginate(Paginator $list)
    {
        return json([
            'code' => Code::SUCCESS,
            'message' => 'success',
            'count' => $list->total(),
            'current' => $list->currentPage(),
            'limit' => $list->listRows(),
            'data' => $list->getCollection(),
        ]);
    }

    /**
     * 错误的响应
     *
     * @time 2019年12月02日
     * @param string $msg
     * @param int $code
     * @return Json
     */
    public static function fail($msg = '', $code = Code::FAILED, $statusCode = 200): Json
    {
        return json([
            'code' => $code,
            'message' => $msg,
        ], $statusCode);
    }
}
